package com.cy.pj.sys.dao;

import com.cy.pj.sys.pojo.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface SysUserDao {

    /**
     * 修改密码
     * @param newPassword
     * @return
     */
    @Update("update sys_users set password=#{newPassword},salt=#{salt} where id=#{userId}")
    int updatePassword(String newPassword,String salt,Integer userId);

    /**
     * 基于用户名查找用户对象
     * @param username
     * @return
     */
    @Select("select * from sys_users where username=#{username}")
    SysUser selectUserByUsername(String username);
    /**
     * 分页查询用户以及用户对应部门相关信息(基于条件,用户名,部门名称,创建时间,状态等)
     * @param entity 封装了查询条件的对象
     * @return 查询到的用户信息,表中的一行纪录映射为内存中一个SysUser对象
     */
    List<SysUser> selectUsers(SysUser entity);

    /**
     * 修改用户状态
     * 禁用启动操作
     * @param id  用户id
     * @param valid 状态值
     * @param modifiedUser 修改用户(将来是系统登录用户)
     * @return 更新的行数
     */
    @Update("update sys_users set valid=#{valid},modifiedTime=now(),modifiedUser=#{modifiedUser}" +
            " where id =#{id}")
    int validById(Integer id,Integer valid,String modifiedUser);

    /**
     * 保存用户自身信息(用户信息中密码要求是已加密的密码)
     * @param entity
     * @return
     */
    int insertUser(SysUser entity);

    /**
     * 基于id查询用户以及用户对应的部门,角色相关信息
     * @param id 用户id
     * @return 查询到的用户信息
     */
    SysUser selectById(Integer id);

    /**
     * 更新用户自身信息(这里的更新不更新密码)
     * @param entity
     * @return
     */
    int updateUser(SysUser entity);
}
